#ifndef FENETREIMAGE_H
#define FENETREIMAGE_H

#include <QtGui>
#include "mainwindow.h"
#include "ecouteursourisgraphicsview.h"
#include <vector>
#include "historique.h"
#include "maqgraphicsscene.h"
using namespace std;

namespace Ui {
    class FenetreImage;
}


class FenetreImage : public QFrame
{
    Q_OBJECT

public:
    explicit FenetreImage(QWidget *parent = 0, Calque *image = NULL, QString name = "Nouvelle_Image");
    ~FenetreImage();

    void updateCalqueCourant();
    void updateImage();
    void repaintVisu();
    void updateVisu();

    EcouteurSourisGraphicsView * getMonEcouteur();
    Ui::FenetreImage * getMonUi();

    void setCalqueVisible(bool vis, int index);
    void setIndexCourant(int i);
    void setOpaciteCalqueCourant(int o);
    void setImage(QImage * im, int indice=0);

    int getIndexCourant();
    Calque* getCalqueCourant();
    Calque* getCalqueCourantMoinsUn();
    QGraphicsItem* getGraphItemCourant();
    MainWindow * getMaMainWindow();
    MaQGraphicsScene * getMaScene();

    void changerCalqueCourant(Calque * nouveauCalque);

    void supprimerCalqueCourant();
    void nouveauCalque();

    int hauteur, largeur;
    QString chemin;
    QString nom;
    bool a_ete_modifie;


    std::vector<Calque*> vectCalques;
    void ajouterCalque(Calque * calque);
    QGraphicsRectItem* fond;
    Historique historique;

    void afficheCouleur(QRgb couleur);

private slots:
    void on_fenetreMoins_clicked();
    void on_fenetrePlus_clicked();
    void on_spinBox_valueChanged(int arg1);
    void closeEvent(QCloseEvent* event);

private:
    Ui::FenetreImage *ui;
    MainWindow * mainWindow;
    MaQGraphicsScene *scene;

    int indexCourant;
    vector<QGraphicsPixmapItem*> vectPmItems;
    EcouteurSourisGraphicsView * monEcouteur;


    //Pour zoom-dezoom
    static const qreal minScale = 0.1;
    static const qreal maxScale = 3200;
    void scaleBy(qreal scaleFactor);
    void setZoom(int percentZoom);
    qreal curScale();

    void pixelCourant();

 signals:
    void pixelChange();

};

#endif // FENETREIMAGE_H
